package model;

import java.io.IOException;
import java.util.ArrayList;

import model.container.CursistenException;

/**
 * Deze klasse bevat de nodige code om een VrijeCursist aan te maken, deze erft over van de klasse
 * Cursist
 * 
 * @author Nicolas Vanderhulst
 * @author Yves Vandeput
 * @version 20111009
 */
public class VrijeCursist extends Cursist {

	// Declareren van variabelen
	private String nationaliteit;

	// Getters and Setters
	public String getNationaliteit() {
		return nationaliteit;
	}

	public void setNationaliteit(String nationaliteit) {
		this.nationaliteit = nationaliteit;
	}

	public VrijeCursist(int cursistnummer, String cursistnaam, String nationaliteit) {
		super(cursistnaam, cursistnummer);
		this.setNationaliteit(nationaliteit);
	}

	public VrijeCursist(int cursistnummer, String cursistnaam, String nationaliteit,
			ArrayList<CursusHistoriek> voorgaandeCursussen) {
		super(cursistnaam, cursistnummer, voorgaandeCursussen);
		this.setNationaliteit(nationaliteit);
	}

	@Override
	public Object clone() throws CloneNotSupportedException {
		Object tempCursist = super.clone();
		((VrijeCursist) tempCursist).setNationaliteit(this.getNationaliteit());
		return tempCursist;
	}

	@Override
	public int compareTo(Cursist o) {
		Cursist c = o;
		if (c.hashCode() < o.hashCode()) {
			return -1;
		} else if (c.hashCode() > o.hashCode()) {
			return 1;
		} else {
			if (c.getNaam().hashCode() < o.getNaam().hashCode()) {
				return -1;
			} else if (c.getNaam().hashCode() > o.getNaam().hashCode()) {
				return 1;
			} else {
				return 0;
			}
		}
	}

	@SuppressWarnings("null")
	@Override
	public VrijeCursist maakObjectVanTekst(String input) throws IOException, NumberFormatException, CursistenException {
		String[] tokens = input.split("\t");

		// Opvullen variabelen
		int tempID = (Integer.parseInt(tokens[0]));
		String tempNaam = tokens[1];
		String tempNationaliteit = tokens[2];

		// Aanmaken Herscholingscursist
		VrijeCursist tempCursist = new VrijeCursist(tempID, tempNaam, tempNationaliteit);
		return tempCursist;
	}

	@SuppressWarnings("boxing")
	@Override
	public String maakTekstVanObject() throws IOException {
		return String.format("%s\t%s\t%s\n", this.getID(), this.getNaam(), this.getNationaliteit());
	}

}
